/**
在Node.js中使用MySQL进行数据库操作时， `mysql2` 是一个流行的库，提供了简单易用的API来与MySQL数据库进行交互。以下是对 `mysql2` 的基本使用和介绍的说明总结：
  1. 安装 `mysql2` 
  首先，需要在项目中安装 `mysql2` 库。可以使用npm命令进行安装：
  npm install mysql2
  2. 创建数据库连接
  使用 `mysql2` 时，需要先创建与MySQL数据库的连接。可以通过以下方式实现：
  const mysql = require('mysql2');

  // 创建连接
  const connection = mysql.createConnection({
    host: 'localhost',
    user: '用户名',
    password: '密码',
    database: '数据库名'
  });

  // 连接到数据库
  connection.connect((err) => {
    if (err) {
      console.error('连接错误: ' + err.stack);
      return;
    }
    console.log('连接成功，ID: ' + connection.threadId);
  });
  3. 执行查询
  可以使用 `query` 方法执行SQL查询。以下是一些常见的操作示例：

  - **查询数据**：
  connection.query('SELECT * FROM 表名', (err, results) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log(results);
  });
  - **插入数据**：
  const sql = 'INSERT INTO 表名 (列1, 列2) VALUES (?, ?)';
  const values = ['值1', '值2'];

  connection.query(sql, values, (err, results) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('插入成功，ID: ' + results.insertId);
  });
  - **更新数据**：
  const sql = 'UPDATE 表名 SET 列1 = ? WHERE 条件';
  const values = ['新值'];

  connection.query(sql, values, (err, results) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('更新成功，受影响的行数: ' + results.affectedRows);
  });
  - **删除数据**：
  const sql = 'DELETE FROM 表名 WHERE 条件';

  connection.query(sql, (err, results) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('删除成功，受影响的行数: ' + results.affectedRows);
  });
  4. 关闭连接
  在完成数据库操作后，记得关闭连接：
  connection.end((err) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('连接已关闭');
  });
  5. 使用Promise和异步/等待
  `mysql2` 还支持Promise，可以与 `async/await` 结合使用，使代码更简洁：
  const mysql = require('mysql2/promise');

  async function main() {
    const connection = await mysql.createConnection({
      host: 'localhost',
      user: '用户名',
      password: '密码',
      database: '数据库名'
    });

    const [rows] = await connection.query('SELECT * FROM 表名');
    console.log(rows);

    await connection.end();
  }

  main().catch(console.error);
  总结
  `mysql2` 库提供了强大的功能和灵活性，使得在Node.js应用中与MySQL数据库进行交互变得简单高效。通过上述基本操作，开发者可以轻松地进行数据库的增删改查操作。
 */
const mysql = require("mysql2");

// 1.创建一个连接(连接上数据库)
const connection = mysql.createConnection({
  host: "localhost",
  port: 3306,
  database: "node_mysql2",
  user: "root",
  password: "root",
});

// 2.执行操作语句, 操作数据库
const statement = "select * from `students`;";
// structure query language: DDL/DML/DQL/DCL
/**
 * query方法
 * 第一个参数: 要执行的sql语句
 * 第二个参数: sql语句中的占位符的值
 * 第三个参数: 回调函数, 用来执行sql语句执行成功之后的操作
 */
connection.query(statement, (err, value, fields) => {
  if (err) {
    console.log(err);
    return;
  }
  console.log(value, fields); // value是查询结果, fields是字段信息
});
